1. Field of the Invention
The present invention relates generally to computer software. More particularly, the present invention relates to methods and apparatus for implementing a progress reporting interface during execution of software applications.
2. Description of Related Art
In certain computer operating systems, a job is defined as the unit of work that a computer operator (or a program called a job scheduler) provides to the operating system. For example, a job could refer to the execution of an application program such as a weekly payroll program. A job is usually said to be run in batch (rather than interactive) mode. The operator or job scheduler gives the operating system a “batch” of jobs to do (e.g., payroll, cost analysis, employee file updating) and these are performed in the background when time-sensitive interactive work is not being done. Each job is broken down into “job steps,” a unit of work that a computer operator (or job scheduler) gives to the operating system. An example of a job step might be to make sure that a particular data set (e.g., computation) or database needed in the job is made accessible.
In a modem user interface, it is desirable to report the progress of long-running tasks such as batch jobs. However, when a job is run, the progress of the job is rarely reported. As one example, a job is often run from a specific type of user interface such as a command line interface (e.g., shell prompt). After the command indicating the job to run is provided at the shell prompt, the next “progress” report that the user often receives is the output from that particular job.
Another problem with the reporting of progress with respect to an executing job is the fact that the reporting is often integrated with the job being executed. While the integrated mode of progress reporting may be desirable in some circumstances, such integrated progress reporting is often undesirable. More particularly, the “front end” process responsible for reporting the progress of the job is often de-coupled from the “back end” process that is executing the job. As one example, when a user executes a job via a web browser interface, the server performing the job is typically located at another location. Since the front end typically does not have sufficient information associated with the back end processing, it is common for the front end to merely report the completion of execution of the job. Even when the progress is reported during the execution of a job, this “report” is often merely a simple display such as a flashing or spinning indicating that the job is being executed, with no indication of the progress made or the estimated time to completion.
In view of the above, it would be desirable if the progress of execution of a particular job could be reported prior to completion of execution of the job. Moreover, it would be beneficial if such a progress report could be provided independent from the front end responsible for presenting the progress.